home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-02-23 | 2.9 KB | 74 lines | [TEXT/GEOL] |
- Item forwarded by BURBECK.S to EYES
-
- Item forwarded by A33 to A34
-
- Item 0303279 20-Feb-90 13:40PST
-
- From: ALGER Alger, Jeff,VCA
-
- To: MACAPP.TECH$ MacApp Technical
-
- Sub: Persistent Observations
-
- Persistent Folks,
-
- Since the level of discussion of the central issues in object persistence is
- quite good, allow me to attack on the periphery with some disconnected
- observations.
-
- • Has anyone else noticed how much effort is going into working around the
- Memory Manager's horrible degradation as a function of number of handles? Why
- not fix it? Dehydrated objects SHOULD be a viable solution, but is limited by
- the MM. (Side note: this bottleneck will get MUCH worse with the advent of
- virtual memory, so it needs to be fixed for entirely unrelated reasons as
- well!)
-
- • With all the talk about metadata missing from the compiler, what about
- post-processing utilities which will scan the source and build the relevant
- metadata resources (or whatever)? Grubby, but doable in a short timeframe. It
- also can handle default behavior for Fields & etc.
-
- • It is easy to step over the line from dealing with simple issues of
- persistence and virtual objects into the world of OODBMS. If you need OODBMS
- functionality, buy an OODBMS. If you can't buy one, invent one and make a lot
- of money. The technology is new but not unexplored.
-
- In the meantime, the fundamental distinction which needs to be drawn is this:
- persistent objects require only a function f(OID)->object, mapping an object's
- persistent identifier to the object itself. This implies no indexing of the
- object store on attributes ("give me all x's such that x.y=z") - that is the
- province of a OODBMS.
-
- • The concept of "ownership" must be addressed, directly or indirectly, by
- every application. In MacApp, this is usually handled implicitly through
- procedural code (the network of Free and New calls.) The RIGHT solution when
- dealing with object networks is to handle ownership explicitly through
- declarative constructs in the source code. For example, one could distinguish
- between a casual reference and an ownership relationship a la
-
- TFoo = Object (...)
- fBar: TBar; Owned; { Will be freed when SELF is freed }
- fAnotherBar: TBar; { Implied is that this is a casual reference }
- ...
- End;
-
- Don't like extending Object Pascal in this way? How about leaving some
- trailings for a post-processor?
-
- fBar: TBar; {$OWNED}
-
- Ownership can deal not only with freeing and creation, but storage and
- retrieval as well: when you store yourself, store your owned objects at the
- same time; same for reading. Presumably, the default behavior would handle
- routine problems but be overridable to handle the new and unusual situations
- from which we all earn our livings.
-
- This idea is really no different than any embedded DBMS language for a network
- database model.
-
- Enough for now.
-
- Jeff Alger
- KPMG Peat Marwick
-
-